package com.ruoyi.good.service.impl;

import java.util.List;

import com.ruoyi.good.domain.vo.GoodTypeVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import com.ruoyi.common.utils.StringUtils;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.good.domain.TestGood;
import com.ruoyi.good.mapper.TestGoodTypeMapper;
import com.ruoyi.good.domain.TestGoodType;
import com.ruoyi.good.service.ITestGoodTypeService;

/**
 * 商品类型Service业务层处理
 * 
 * @author 程序员dd
 * @date 2025-09-03
 */
@Service
public class TestGoodTypeServiceImpl implements ITestGoodTypeService 
{
    @Autowired
    private TestGoodTypeMapper testGoodTypeMapper;

    /**
     * 查询商品类型
     * 
     * @param typeId 商品类型主键
     * @return 商品类型
     */
    @Override
    public TestGoodType selectTestGoodTypeByTypeId(Long typeId)
    {
        return testGoodTypeMapper.selectTestGoodTypeByTypeId(typeId);
    }

    /**
     * 查询商品类型列表
     * 
     * @param testGoodType 商品类型
     * @return 商品类型
     */
    @Override
    public List<TestGoodType> selectTestGoodTypeList(TestGoodType testGoodType)
    {
        return testGoodTypeMapper.selectTestGoodTypeList(testGoodType);
    }

    /**
     * 新增商品类型
     * 
     * @param testGoodType 商品类型
     * @return 结果
     */
    @Transactional
    @Override
    public int insertTestGoodType(TestGoodType testGoodType)
    {
        int rows = testGoodTypeMapper.insertTestGoodType(testGoodType);
        insertTestGood(testGoodType);
        return rows;
    }

    /**
     * 修改商品类型
     * 
     * @param testGoodType 商品类型
     * @return 结果
     */
    @Transactional
    @Override
    public int updateTestGoodType(TestGoodType testGoodType)
    {
        testGoodTypeMapper.deleteTestGoodByTypeId(testGoodType.getTypeId());
        insertTestGood(testGoodType);
        return testGoodTypeMapper.updateTestGoodType(testGoodType);
    }

    /**
     * 批量删除商品类型
     * 
     * @param typeIds 需要删除的商品类型主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteTestGoodTypeByTypeIds(Long[] typeIds)
    {
        testGoodTypeMapper.deleteTestGoodByTypeIds(typeIds);
        return testGoodTypeMapper.deleteTestGoodTypeByTypeIds(typeIds);
    }

    /**
     * 删除商品类型信息
     * 
     * @param typeId 商品类型主键
     * @return 结果
     */
    @Transactional
    @Override
    public int deleteTestGoodTypeByTypeId(Long typeId)
    {
        testGoodTypeMapper.deleteTestGoodByTypeId(typeId);
        return testGoodTypeMapper.deleteTestGoodTypeByTypeId(typeId);
    }

    @Override
    public List<GoodTypeVo> getGoodCountByTestGoodTypeList(TestGoodType testGoodType) {
        return testGoodTypeMapper.getGoodCountByTestGoodTypeList(testGoodType);
    }

    /**
     * 新增管理商品信息
     * 
     * @param testGoodType 商品类型对象
     */
    public void insertTestGood(TestGoodType testGoodType)
    {
        List<TestGood> testGoodList = testGoodType.getTestGoodList();
        Long typeId = testGoodType.getTypeId();
        if (StringUtils.isNotNull(testGoodList))
        {
            List<TestGood> list = new ArrayList<TestGood>();
            for (TestGood testGood : testGoodList)
            {
                testGood.setTypeId(typeId);
                list.add(testGood);
            }
            if (list.size() > 0)
            {
                testGoodTypeMapper.batchTestGood(list);
            }
        }
    }
}
